package com.itheima.dao.system;

import com.itheima.domain.system.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Author: gjp
 * @Description:
 * @Date: Created in 21:05 2020/11/29
 * @ModifiedBy:
 */
public interface RoleDao {
    /**
     * 根据可能存在的角色名称查询Role,用来做Role页面搜索框
     *
     * @param roleName
     * @return
     */
    List<Role> findAllByRoleName(String roleName);


    /**
     * 新增Role的保存
     *
     * @param role
     */
    void save(Role role);

    /**
     * 根据 角色id 删除角色
     *
     * @param roleId
     */
    void delete(String roleId);

    /**
     * 根据 角色id 查找该角色
     *
     * @param roleId
     * @return
     */
    Role findByRoleId(String roleId);

    /**
     * 根据 角色id 对角色进行更新
     *
     * @param role
     */
    void update(Role role);

    /**
     * 根据 角色id 查询该角色具有哪些权限
     *
     * @param roleId
     * @return
     */
    List<Map> findAllPermissionByRoleId(String roleId);

    /**
     * 逐条保存权限和角色的映射
     *
     * @param permissionId
     * @param roleId
     */
    void savePermissionToRole(@Param("permissionId") String permissionId, @Param("roleId") String roleId);

    /**
     * 根据 角色id 删除 该角色 映射的 所有 权限信息
     *
     * @param roleId
     */
    void deletePermissionRoleByRoleId(String roleId);

    @Delete("DELETE FROM users_role WHERE roleId = #{roleId}")
    void deleteRoleUserByRoleId(String roleId);
}
